package main

import (
	"log"
	"time"
)

// defer 语句会将函数推迟到外层函数返回之后执行。
// 推迟调用的函数其参数会立即求值，但直到外层函数返回前该函数都不会被调用。
func main() {
	now := time.Now()
	// 函数参数 立即求值
	defer log.Print("func time 1:", time.Since(now))
	// 调用方法 结束后执行
	defer func() {
		log.Print("func time 2:", time.Since(now))
	}()
	time.Sleep(time.Second)
	log.Print("func time 3:", time.Since(now))
}